In some environments, it is desired to restrict access to certain areas in the memory of a storage system while providing shared access to other areas in the memory. The Non-Volatile Memory Express (NVMe) protocol can be used to accomplish this. In a typical NVMe environment, a single host is used with a single storage system having a controller and a memory. The storage system can implement a plurality of virtual NVMe controllers that communicate with the controller of the storage system. NVMe provides the concept of “namespace reservation” to restrict access of certain namespaces (i.e., collections of logical blocks in memory) to certain virtual NVMe controllers. A private namespace is an area of memory that is only accessible by an authorized virtual NVMe controller, whereas a shared namespace is an area of memory that is accessible by all of the virtual NVMe controllers. The host can instruct the storage system as to which virtual NVMe controllers are authorized to access the various namespaces.